from v1 import client

import asyncio

import os
import json


class TestDifyClient:
    async def test_chat_messages(self):
        cln = client.AsyncDifyServiceClient(api_key=os.getenv("DIFY_API_KEY"), base_url=os.getenv("DIFY_BASE_URL"))

        async for chunk in cln.chat_messages(inputs={}, query="调用工具查看现在几点？", user="test"):
            print(json.dumps(chunk, ensure_ascii=False, indent=4))

    async def test_upload_file(self):
        cln = client.AsyncDifyServiceClient(api_key=os.getenv("DIFY_API_KEY"), base_url=os.getenv("DIFY_BASE_URL"))

        file_bytes = open("img.png", "rb").read()

        print(type(file_bytes))

        file = ("img2.png", file_bytes, "image/png")

        resp = await cln.upload_file(file=file, user="test")
        print(json.dumps(resp, ensure_ascii=False, indent=4))

    async def test_workflow_run(self):
        cln = client.AsyncDifyServiceClient(api_key=os.getenv("DIFY_API_KEY"), base_url=os.getenv("DIFY_BASE_URL"))

        # resp = await cln.workflow_run(inputs={}, user="test")
        # # print(json.dumps(resp, ensure_ascii=False, indent=4))
        # print(resp)
        chunks = []

        ignored_events = ['text_chunk']
        async for chunk in cln.workflow_run(inputs={}, user="test"):
            if chunk['event'] in ignored_events:
                continue
            chunks.append(chunk)
        print(json.dumps(chunks, ensure_ascii=False, indent=4))

if __name__ == "__main__":
    asyncio.run(TestDifyClient().test_chat_messages())
